<?php

namespace WebmanGrpc\Event;

/**
 * 事件接口
 * 
 * 所有事件必须实现此接口
 */
interface EventInterface
{
    /**
     * 获取事件名称
     * 
     * @return string 事件名称
     */
    public function getName(): string;
    
    /**
     * 获取事件数据
     * 
     * @return array 事件数据
     */
    public function getData(): array;
    
    /**
     * 获取事件时间戳
     * 
     * @return int 事件时间戳
     */
    public function getTimestamp(): int;
    
    /**
     * 检查事件是否已停止传播
     * 
     * @return bool 是否已停止传播
     */
    public function isPropagationStopped(): bool;
    
    /**
     * 停止事件传播
     * 
     * @return void
     */
    public function stopPropagation(): void;
}